﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entities;
using DAL;
using System.Text.RegularExpressions;

namespace QuanLyBilliards_Coffee
{
    public partial class FormThemKhachHang : Form
    {
        public static KhachHang khag = new KhachHang();
        public static bool kiemtra = false;
        public IKhachHangRepository kh = new KhachHangRepository();
        public FormThemKhachHang()
        {
            InitializeComponent();
        }

        private void FormThemKhachHang_Load(object sender, EventArgs e)
        {

            txtmakh.ReadOnly = kiemtra;
            LoadKhachHang(khag);

        }
        public bool KiemTraNhapSo(string t)
        {
            string s = mtbCMND.Text;
            string pattern = @"[0-9]";
            Regex rg = new Regex(pattern, RegexOptions.IgnoreCase);
            if (!rg.IsMatch(s))
            {

                //if(  MessageBox.Show("Nhập Chưa Đúng","Hướng Dẫn ViDu:1298986480",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Ignore)
                return false;
            }
            return true;
        }
        public bool KiemTra(string s, List<KhachHang> ds)
        {
            foreach (var item in ds)
                if (item.MaKH.Trim().ToUpper() == s.Trim().ToUpper())
                    return true;
            return false;

        }
        public bool KiemTraSDT(string s)
        {
            string pattern = @"^0([1-9]{1})\d{8,9}";
            Regex rg = new Regex(pattern, RegexOptions.IgnoreCase);
            if (!rg.IsMatch(s))
            {
                //if(  MessageBox.Show("Chưa Nhập Đúng Định Dạng","Hướng Dẫn ViDu:098986480",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Ignore)
                return false;
            }
            return true;
        }
        public bool KiemTraT(string r)
        {
            r = txttenkh.Text;
            string pattern = @"[a-z]";
            Regex rg = new Regex(pattern, RegexOptions.IgnoreCase);
            if (!rg.IsMatch(r))
            {

                //if(  MessageBox.Show("Nhập Chưa Đúng","Hướng Dẫn ViDu:1298986480",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning)==DialogResult.Ignore)
                return false;
            }
            return true;
        }

        private void btthoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void LoadKhachHang(KhachHang kh)
        {
            txtmakh.Text = kh.MaKH;
            txttenkh.Text = kh.TenKH;
            txtdiachi.Text = kh.DiaChi;
            txtsodt.Text = kh.SoDT;
            if (kh.NgaySinh > dtpngaysinh.MinDate)
                dtpngaysinh.Value = kh.NgaySinh;
            else dtpngaysinh.Value = DateTime.Now;
            mtbCMND.Text = kh.CMND;

        }

      

        private KhachHang LayDLConTrol()
        {
            KhachHang khg = new KhachHang();
            khg.MaKH = txtmakh.Text;
            khg.TenKH = txttenkh.Text;
            khg.SoDT = txtsodt.Text;
            khg.CMND = mtbCMND.Text;
            bool gt = true;
            if (radnam.Checked)
                gt = false;
            khg.GioiTinh = gt;

            khg.DiaChi = txtdiachi.Text;
            khg.NgaySinh = dtpngaysinh.Value;
            return khg;
        }
      
        private void txtsodt_Validated(object sender, EventArgs e)
        {
            this.errorProvider1.SetError(txtsodt, "");
        }

        private void txtsodt_Validating(object sender, CancelEventArgs e)
        {
            string t = txtsodt.Text;
            if (!KiemTraSDT(t))
            {
                //txtsodt.Text = "";
                this.errorProvider1.SetError(txtsodt, "Ví Dụ 01234556");
                e.Cancel = true;

            }

        }
      
        public bool KiemTraTTTMa(ref string s)
        {
            s = "";
            if (KiemTraChuoiRong(txtmakh.Text))
                s += "\nBạn Chưa Nhập Mã Nhà Cung Cấp";
            if (KiemTraChuoiRong(txttenkh.Text))
                s += "\nBạn Chưa Nhập Tên Nhà Cung Cấp";
            if (s == "")
                return true;
            return false;
        }
        public bool KiemTraChuoiRong(string s)
        {
            if (CatKhoangTrangDu(s) == "")
                return false;
            return true;
        }
        public static string CatKhoangTrangDu(string input)
        {
            string pattern = @"\s{2,}";
            return Regex.Replace(input, pattern, delegate(Match m)
            {
                if (m.Index == 0 || m.Index == input.Length)
                    return "";
                else
                    return " ";
            });
        }
        private void mtbCMND_Validated(object sender, EventArgs e)
        {
            this.errorProvider1.SetError(mtbCMND, "");

        }

        private void mtbCMND_Validating(object sender, CancelEventArgs e)
        {
            string t = mtbCMND.Text;
            if (!KiemTraNhapSo(t))
            {
                //txtsodt.Text = "";
                this.errorProvider1.SetError(mtbCMND, "Ví Dụ 1234556");
                e.Cancel = true;

            }

        }

        private void txttenkh_Validated(object sender, EventArgs e)
        {
            this.errorProvider1.SetError(txttenkh, "");
        }

        private void txttenkh_Validating(object sender, CancelEventArgs e)
        {
            string t = txttenkh.Text;
            if(!KiemTraChuoiRong(t))
            {
                this.errorProvider1.SetError(txttenkh, "Ban Phải Nhập Tên");
          
                e.Cancel = true;
            }

        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            string ma = txtmakh.Text;
            KhachHang khthem = LayDLConTrol();
            if (!KiemTraChuoiRong(txtmakh.Text))
                MessageBox.Show("Bạn Chưa Nhập Mã Khách Hàng ");
           
           
              if (!KiemTra(ma, kh.GetAll().ToList()))
              {

                  {
                      if (kh.GetById(txtmakh.Text) != null)

                          MessageBox.Show("Mã Khách Hàng Đã Tồn Tại");

                      else
                      {
                          if (kh.AddNew(khthem))
                          {

                              MessageBox.Show("Thêm Thành Công");
                             
                          }
                          else

                              MessageBox.Show("Thêm Không Thành Công");
                      }
                  }
              }
    
                else

                    if (MessageBox.Show("DL Đã có muốn cập nhật không", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        if (kh.Update(khthem))
                            MessageBox.Show("cập nhật Thành Công");
                        else MessageBox.Show("cập nhật Không Thành Công");
                    }
            

        }

        private void txtmakh_Validated(object sender, EventArgs e)
        {
            this.errorProvider1.SetError(txtmakh, "");
        }

        private void txtmakh_Validating(object sender, CancelEventArgs e)
        {
            string t = txtmakh.Text;
            if (!KiemTraChuoiRong(t))
            {
                this.errorProvider1.SetError(txtmakh, "Ban Phải Mã Khách Hàng");

                e.Cancel = true;
            }
        }

  

        private void bttreset_Click_1(object sender, EventArgs e)
        {
            txttenkh.Text = "";
            txtdiachi.Text = "";
            txtsodt.Text = "";
            mtbCMND.Text = "";
            radnam.Checked = true;
            dtpngaysinh.Value = DateTime.Now;
        }




    }
}
